Information storage and retrieval systems are used to store information provided by one or more host computer systems. Such information storage and retrieval systems receive requests to write information to one or more information storage devices, and requests to read information from those one or more information storage devices. The system is continuously moving information to and from storage devices.
Data storage devices, such as hard disk drives, can “drop write,” i.e. fail to write data to a designated sector of the storage medium, and/or perform off-track writes to that designated sector. A subsequent read of this sector would receive old, i.e. “stale,” data instead of the data last written. In a RAID-5 encoded array, if a subsequent write to the parity stripe that causes the invalidly written sector to be read in calculating the new parity, the parity will become corrupt with the previous data because the read used to update the parity will get stale data instead of the data that was used when creating the parity.
In order to identify such dropped writes/off-track writes, the prior art teaches reading back data after every write. Such a read back verifies that the data is written correctly. Such read backs necessarily require, however, an additional read operation for every write operation. The prior art also teaches regularly checking the parity of the entire storage array. This approach is cumbersome and requires an inordinate amount of time. Moreover, while such a parity check is in progress, parity corruption can occur at a different part of the storage medium.
What is needed is a method to identify dropped writes and/or off-track writes without reading back every write, and without checking the parity of the entire storage array. Applicants' method identifies dropped writes and off-track writes by checking the data state and the parity state of a sector when handling data.